home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 351-375 / 359 / dice / dice.lzh / lib / fd / lseek.c < prev    next >
C/C++ Source or Header  |  1990-03-27  |  528b  |  35 lines

  1.  
  2. /*
  3.  *  LSEEK.C
  4.  *
  5.  *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <fcntl.h>
  10. #include <ioctl.h>
  11. #include <errno.h>
  12.  
  13. size_t
  14. lseek(fd, offset, whence)
  15. int fd;
  16. size_t offset;
  17. int whence;
  18. {
  19.     _IOFDS *d;
  20.     int n = -1;
  21.  
  22.     if (d = __getfh(fd)) {
  23.     if (d->fd_Exec)
  24.         return((*d->fd_Exec)(d->fd_Fh, IOC_SEEK, offset, whence));
  25.     n = Seek(d->fd_Fh, offset, whence-1);
  26.     if (n >= 0) {
  27.         if (offset || whence != 1)
  28.         n = Seek(d->fd_Fh, 0L, 0);
  29.         return(n);
  30.     }
  31.     }
  32.     return(n);
  33. }
  34.  
  35.